/*
 * Copyright (c) 2009, ConnectCode Pte Ltd
 *                     http://www.webextractor360.com
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of ConnectCode nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY ConnectCode Pte Ltd ''AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL ConnectCode Pte Ltd BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * 
 */

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Windows;
using System.Windows.Forms;

using WebExtractor360.look4me.UserInterface;

namespace WebExtractor360.look4me.Framework
{
    public class FormsActivator
    {
        public static string EXTRACTORFORM = "ExtractorForm";
        public static string VIEWLOG = "ViewsLog";
        public static string TEXTPAD = "TextPad";

        public static int QuickViewCount = 0;
        public static int TextPadCount = 0;

        public static ArrayList quickViewArrayList=new ArrayList();

        public static void CloseQuickViewForms()
        {
            IEnumerator ie=quickViewArrayList.GetEnumerator();
            while (ie.MoveNext())
            {
                ((TabForm)ie.Current).CloseTabForm();
            }
            QuickViewCount = 0;
        }


        public static Form ActivateForm(string formname, Form mainobj)
        {
            ArrayList excludeList=new ArrayList();


            MainForm mainform = (MainForm)mainobj;
            if (formname==null || formname.Equals(""))
                return null;

            if (formname.Equals(FormsActivator.TEXTPAD))
            {
                TextPadCount++;
                TextPadForm emForm;

                emForm = new TextPadForm();
                emForm.BaseMainForm = mainform;
                emForm.WindowState = FormWindowState.Maximized;
                emForm.MdiParent = mainform;

                TabPage tp = new TabPage();

                emForm.BaseTabCtrl = mainform.GetMainTabControl();
                emForm.BaseTabPage = tp;

                tp.Parent = mainform.GetMainTabControl();
                tp.Text = emForm.Text + " - " + Convert.ToString(TextPadCount);
                tp.Show();

                emForm.Show();
                mainobj.Invalidate();
                emForm.BaseTabPage = tp;
                mainform.GetMainTabControl().SelectedTab = tp;

                return emForm;
            }
            else if (formname.Equals(FormsActivator.EXTRACTORFORM))
            {
                WorkerForm emForm;
                emForm = (WorkerForm)Singleton.GetInstance().GetForm(formname);

                if (emForm == null)
                {

                    emForm = new WorkerForm();
                    emForm.Name = formname;
                    emForm.BaseMainForm = mainform;
                    emForm.WindowState = FormWindowState.Maximized;
                    emForm.MdiParent = mainform;

                    TabPage tp = new TabPage();

                    emForm.BaseTabCtrl = mainform.GetMainTabControl();
                    emForm.BaseTabPage = tp;

                    tp.Parent = mainform.GetMainTabControl();
                    tp.Text = emForm.Text;
                    tp.Show();

                    //emForm.TopMost = true;
                    emForm.Show();
                    mainobj.Invalidate();
                    emForm.BaseTabPage = tp;
                    mainform.GetMainTabControl().SelectedTab = tp;
                    
                    Singleton.GetInstance().AddForm(formname, emForm);
                    
                }
                else
                {
                    emForm.BaseTabCtrl.SelectedTab = emForm.BaseTabPage;
                }
                return emForm;
            }
            return null;

        }
    }
}
